1. Technical Field
This disclosure relates to computer networking. More specifically, this disclosure relates to methods and apparatuses for packet classification and spreading in a virtualized system.
2. Related Art
Rapid advances in computer technology have touched almost all aspects of our lives—from buying books to buying real estate, and from reading a newspaper to watching a movie. Virtualization is a recent trend in computing technology which provides a wide range of benefits, such as reducing capital expenditure, reducing operating costs, improving reliability, improving security, etc. Unfortunately, virtualization has created a number of challenges in high-performance systems.
In a high-performance system (e.g., a server), network packets are classified for processing by different processing elements which are usually tied to system-allocated resources (such as an operating system, platform, etc). Each processing element can be tied to a device abstraction, and the device abstraction could have multiple threads associated with it. A higher level policy is typically used to determine how load is to be spread among each of the hardware threads.
To ensure high resource utilization, the virtualized system should be able to dynamically change the association between a device abstraction and a thread. Further, the virtualized system should be able to dynamically change the load-sharing or packet-spreading policies based on ingress traffic characteristics. Moreover, in situations where a packet needs to be distributed to multiple device abstractions, the virtualized system should be able to apply different policies to packets depending on the device abstraction to which the packet is delivered. Additionally, most of the processing needs to be performed in hardware to improve performance. Unfortunately, achieving these system virtualization goals can be very challenging due to hardware resources constraints.